The present invention relates to the operation of pseudo-random number generators, and more particularly, to managing and extending entropy pools used in pseudo-random number generators.
Pseudo-random numbers are required for many operations in computers, computer networks, and network devices, and are frequently used in security-critical operations such as cryptographic key derivation. Unpredictability of such random or pseudo-random numbers is paramount for such applications.
Such unpredictability may be defined for example, as a low correlation between bits in a pseudo-random bitstream, between portions of the bitstream, or between the pseudo-random bitstream and other signals.
A good random number utility is a carefully designed and vetted subsystem in a computing device. It may be implemented entirely in software, or it may use specialized hardware assists A typical utility operates on an entropy pool, a pool of randomized bits, from which requests for random numbers may be satisfied.
Personal computers typically derive entropy, which may be defined as a numeric quantity which is unpredictable and uncorrelated from a statistical perspective, from various environmental inputs, particularly those affected by the randomness and unpredictability of human operators Such inputs may include the latency between key presses on a keyboard, idiosyncratic mouse timing, variations in network packet arrival, variation in disk drive operation such as seek time variations, and others. Some systems may devote hardware resources to (pseudo-) random number generation. Values from such sources may be “whitened” by running them through a hashing algorithm such as SHA1 or other cryptographic process, and the resulting bits “stirred” into the entropy pool of the random number utility.
Embedded devices, such as network devices and wireless access nodes, often lack hardware random number generators and are often at a loss for sufficient entropy sources, as such devices do not have unpredictable users, keyboards, mice, disk drives, and the like. Often the “best” response in such devices is to add a hardware generator and use this generator to periodically re-seed the entropy pool used by the random number utility.
What is needed is a way of adding entropy, particularly in embedded systems.